// 版权归Go作者所有。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package sym

import "cmd/internal/dwarf"

// LoaderSym持有一个加载器。符号值。我们不能从sym包中引用这个
// 类型，因为loader导入sym。编译单元表示一起编译的一组源文件。由于一个Go包中的所有Go源都是一起编译的，每个包有一个CompliationUnit，代表该包中的所有Go源，每个程序集文件加一个CompliationUnit。
type LoaderSym int

// 
// 等效地，链接器加载的每个库中的每个对象文件都有一个编译单元。
// 
// 这些都用于矮星和pclntab生成。
type CompilationUnit struct {
	Lib       *Library      // 我们的库
	PclnIndex int           // pclntab中此CU的索引
	PCs       []dwarf.Range // PC范围，相对于Textp[0]
	DWInfo    *dwarf.DWDie  // CU root DIE 
	FileTable []string      // 此编译单元中使用的文件表。

	Consts    LoaderSym   // 包常量死亡
	FuncDIEs  []LoaderSym // 函数死亡子树
	VarDIEs   []LoaderSym // 全局变量死亡
	AbsFnDIEs []LoaderSym // 抽象函数死亡子树
	RangeSyms []LoaderSym // 调试范围符号
	Textp     []LoaderSym // 此CU中的文本符号
}
